home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume34 / imagemagick / part01 < prev    next >
Encoding:
Text File  |  1992-12-14  |  57.0 KB  |  1,789 lines

  1. Newsgroups: comp.sources.misc
  2. From: cristy@eplrx7.es.duPont.com (John Cristy)
  3. Subject:  v34i029:  imagemagick - X11 image processing and display v2.2, Part01/26
  4. Message-ID: <1992Dec13.202159.7329@sparky.imd.sterling.com>
  5. X-Md4-Signature: 551984c294828d269ac2b3f185fc6b3a
  6. Date: Sun, 13 Dec 1992 20:21:59 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: cristy@eplrx7.es.duPont.com (John Cristy)
  10. Posting-number: Volume 34, Issue 29
  11. Archive-name: imagemagick/part01
  12. Environment: UNIX, VMS, X11, SGI, DEC, Cray, Sun, Vax
  13.  
  14. #!/bin/sh
  15. # This is a shell archive (produced by shar 3.49)
  16. # To extract the files from this archive, save it to a file, remove
  17. # everything above the "!/bin/sh" line above, and type "sh file_name".
  18. #
  19. # made 12/13/1992 06:16 UTC by kent@sparky.IMD.Sterling.COM
  20. # Source directory /home/kent/mod/csm/queue/image
  21. #
  22. # existing files will NOT be overwritten unless -c is specified
  23. #
  24. # This is part 1 of a multipart archive                                    
  25. # do not concatenate these parts, unpack them in order with /bin/sh        
  26. #
  27. # This shar contains:
  28. # length  mode       name
  29. # ------ ---------- ------------------------------------------
  30. #   2743 -rw-r--r-- ImageMagick/Imakefile
  31. #   3144 -rw-r--r-- ImageMagick/Makefile
  32. #   4759 -rw-r--r-- ImageMagick/PreRvIcccm.c
  33. #  11672 -rw-r--r-- ImageMagick/README
  34. #  16586 -rw-r--r-- ImageMagick/XtoPS.c
  35. #   6159 -rw-r--r-- ImageMagick/XtoPS.man
  36. #   2589 -rw-r--r-- ImageMagick/Manifest.ps
  37. #   9232 -rw-r--r-- ImageMagick/colors.c
  38. #   3952 -rw-r--r-- ImageMagick/Make.com
  39. #   1270 -rw-r--r-- ImageMagick/display.h
  40. #  30521 -rw-r--r-- ImageMagick/display.man
  41. #   1752 -rw-r--r-- ImageMagick/xtp/Makefile
  42. #   1497 -rw-r--r-- ImageMagick/xtp/Imakefile
  43. #    861 -rw-r--r-- ImageMagick/xtp/xtp.h
  44. #   1876 -rw-r--r-- ImageMagick/xtp/README
  45. #  36656 -rw-r--r-- ImageMagick/xtp/regular.c
  46. #   1299 -rw-r--r-- ImageMagick/xtp/regular.h
  47. #  41314 -rw-r--r-- ImageMagick/xtp/xtp.c
  48. #   6431 -rw-r--r-- ImageMagick/xtp/xtp.man
  49. #    541 -rw-r--r-- ImageMagick/xtp/get
  50. #   5587 -rw-r--r-- ImageMagick/xtp/network.c
  51. # 154352 -rw-r--r-- ImageMagick/image.c
  52. #    186 -rw-r--r-- ImageMagick/scenes/Makefile
  53. #  28655 -rw-r--r-- ImageMagick/scenes/dna.script
  54. #    464 -rw-r--r-- ImageMagick/scenes/README
  55. #  16580 -rw-r--r-- ImageMagick/import.c
  56. #   5476 -rw-r--r-- ImageMagick/import.man
  57. #    295 -rw-r--r-- ImageMagick/images/README
  58. #  60634 -rw-r--r-- ImageMagick/quantize.c
  59. #  29802 -rw-r--r-- ImageMagick/rotate.c
  60. #  44946 -rw-r--r-- ImageMagick/compress.c
  61. #   4107 -rw-r--r-- ImageMagick/image.h
  62. # 187475 -rw-r--r-- ImageMagick/display.c
  63. #   6075 -rw-r--r-- ImageMagick/X.h
  64. #  15842 -rw-r--r-- ImageMagick/animate.man
  65. # 188131 -rw-r--r-- ImageMagick/X.c
  66. #    485 -rw-r--r-- ImageMagick/animate.h
  67. #  72608 -rw-r--r-- ImageMagick/animate.c
  68. #  10068 -rw-r--r-- ImageMagick/miff.man
  69. #  49738 -rw-r--r-- ImageMagick/montage.c
  70. # 191036 -rw-r--r-- ImageMagick/alien.c
  71. #  17572 -rw-r--r-- ImageMagick/montage.man
  72. #   1201 -rw-r--r-- ImageMagick/PreRvIcccm.h
  73. #  11043 -rw-r--r-- ImageMagick/quantize.man
  74. #    368 -rw-r--r-- ImageMagick/compress.h
  75. #   3092 -rw-r--r-- ImageMagick/XWDFile.h
  76. #    403 -rw-r--r-- ImageMagick/alien.h
  77. #   5765 -rw-r--r-- ImageMagick/SYNOPSIS
  78. #  27143 -rw-r--r-- ImageMagick/utilities/mogrify.c
  79. #   2095 -rw-r--r-- ImageMagick/utilities/Imakefile
  80. #   2880 -rw-r--r-- ImageMagick/utilities/Makefile
  81. #  18313 -rw-r--r-- ImageMagick/utilities/convert.c
  82. #   9749 -rw-r--r-- ImageMagick/utilities/mogrify.man
  83. #   7988 -rw-r--r-- ImageMagick/utilities/convert.man
  84. #   8742 -rw-r--r-- ImageMagick/utilities/MIFFtoSTEREO.c
  85. #   2499 -rw-r--r-- ImageMagick/utilities/Make.com
  86. #  17946 -rw-r--r-- ImageMagick/signature.c
  87. #   2264 -rw-r--r-- ImageMagick/ChangeLog
  88. #   2012 -rw-r--r-- ImageMagick/Magick.tmpl
  89. #
  90. if test -r _shar_seq_.tmp; then
  91.     echo 'Must unpack archives in sequence!'
  92.     echo Please unpack part `cat _shar_seq_.tmp` next
  93.     exit 1
  94. fi
  95. # ============= ImageMagick/Imakefile ==============
  96. if test ! -d 'ImageMagick'; then
  97.     echo 'x - creating directory ImageMagick'
  98.     mkdir 'ImageMagick'
  99. fi
  100. if test -f 'ImageMagick/Imakefile' -a X"$1" != X"-c"; then
  101.     echo 'x - skipping ImageMagick/Imakefile (File already exists)'
  102.     rm -f _shar_wnt_.tmp
  103. else
  104. > _shar_wnt_.tmp
  105. echo 'x - extracting ImageMagick/Imakefile (Text)'
  106. sed 's/^X//' << 'SHAR_EOF' > 'ImageMagick/Imakefile' &&
  107. #
  108. #  Imakefile for display, animate, montage, XtoPS, and import.
  109. #
  110. #  Copyright 1992 E. I. du Pont de Nemours & Company
  111. #
  112. #  Permission to use, copy, modify, distribute, and sell this software and
  113. #  its documentation for any purpose is hereby granted without fee,
  114. #  provided that the above Copyright notice appear in all copies and that
  115. #  both that Copyright notice and this permission notice appear in
  116. #  supporting documentation, and that the name of E. I. du Pont de Nemours
  117. #  & Company not be used in advertising or publicity pertaining to
  118. #  distribution of the software without specific, written prior
  119. #  permission.  E. I. du Pont de Nemours & Company makes no representations
  120. #  about the suitability of this software for any purpose.  It is provided
  121. #  "as is" without express or implied warranty.
  122. #
  123. #  E. I. du Pont de Nemours & Company disclaims all warranties with regard
  124. #  to this software, including all implied warranties of merchantability
  125. #  and fitness, in no event shall E. I. du Pont de Nemours & Company be
  126. #  liable for any special, indirect or consequential damages or any
  127. #  damages whatsoever resulting from loss of use, data or profits, whether
  128. #  in an action of contract, negligence or other tortious action, arising
  129. #  out of or in connection with the use or performance of this software.
  130. #
  131. X
  132. #include "Magick.tmpl"
  133. X
  134. MagickObjects= X.o image.o rotate.o quantize.o colors.o signature.o compress.o\
  135. X  alien.o PreRvIcccm.o
  136. X
  137. SRCS= display.c X.c image.c rotate.c quantize.c colors.c signature.c\
  138. X  compress.c alien.c PreRvIcccm.c
  139. OBJS= display.o $(MagickObjects)
  140. AnimateObjects= animate.o $(MagickObjects)
  141. ImportObjects= import.o $(MagickObjects)
  142. MontageObjects= montage.o $(MagickObjects)
  143. XXtoPSObjects= XtoPS.o $(MagickObjects)
  144. X
  145. PROGRAMS= display animate montage XtoPS import
  146. X
  147. AllTarget($(PROGRAMS))
  148. X
  149. ComplexProgramTarget(display)
  150. NormalProgramTarget(animate,$(AnimateObjects), , , )
  151. InstallProgram(animate,$(BINDIR))
  152. InstallManPage(animate,$(MANDIR))
  153. NormalProgramTarget(montage,$(MontageObjects), , , )
  154. InstallProgram(montage,$(BINDIR))
  155. InstallManPage(montage,$(MANDIR))
  156. NormalProgramTarget(XtoPS,$(XtoPSObjects), , , )
  157. InstallProgram(XtoPS,$(BINDIR))
  158. InstallManPage(XtoPS,$(MANDIR))
  159. NormalProgramTarget(import,$(ImportObjects), , , )
  160. InstallProgram(import,$(BINDIR))
  161. InstallManPage(import,$(MANDIR))
  162. X
  163. #define InstallMyManPage(file,destdir,suffix)                           @@\
  164. install.man:: file.man                                                  @@\
  165. X    $(INSTALL) -c $(INSTMANFLAGS) file.man $(DESTDIR)destdir/file.suffix
  166. X
  167. InstallMyManPage(quantize,$(MANSOURCEPATH)5,5)
  168. InstallMyManPage(miff,$(MANSOURCEPATH)5,5)
  169. X
  170. #define IHaveSubdirs
  171. X
  172. SUBDIRS= utilities xtp
  173. X
  174. MakeSubdirs($(SUBDIRS))
  175. DependSubdirs($(SUBDIRS))
  176. SHAR_EOF
  177. chmod 0644 ImageMagick/Imakefile ||
  178. echo 'restore of ImageMagick/Imakefile failed'
  179. Wc_c="`wc -c < 'ImageMagick/Imakefile'`"
  180. test 2743 -eq "$Wc_c" ||
  181.     echo 'ImageMagick/Imakefile: original size 2743, current size' "$Wc_c"
  182. rm -f _shar_wnt_.tmp
  183. fi
  184. # ============= ImageMagick/Makefile ==============
  185. if test -f 'ImageMagick/Makefile' -a X"$1" != X"-c"; then
  186.     echo 'x - skipping ImageMagick/Makefile (File already exists)'
  187.     rm -f _shar_wnt_.tmp
  188. else
  189. > _shar_wnt_.tmp
  190. echo 'x - extracting ImageMagick/Makefile (Text)'
  191. sed 's/^X//' << 'SHAR_EOF' > 'ImageMagick/Makefile' &&
  192. #
  193. #  Generic makefile for display, animate, montage, XtoPS, and import for
  194. #  computers that do not have xmkmf.
  195. #
  196. #  Copyright 1992 E. I. du Pont de Nemours & Company
  197. #
  198. #  Permission to use, copy, modify, distribute, and sell this software and
  199. #  its documentation for any purpose is hereby granted without fee,
  200. #  provided that the above Copyright notice appear in all copies and that
  201. #  both that Copyright notice and this permission notice appear in
  202. #  supporting documentation, and that the name of E. I. du Pont de Nemours
  203. #  & Company not be used in advertising or publicity pertaining to
  204. #  distribution of the software without specific, written prior
  205. #  permission.  E. I. du Pont de Nemours & Company makes no representations
  206. #  about the suitability of this software for any purpose.  It is provided
  207. #  "as is" without express or implied warranty.
  208. #
  209. #  E. I. du Pont de Nemours & Company disclaims all warranties with regard
  210. #  to this software, including all implied warranties of merchantability
  211. #  and fitness, in no event shall E. I. du Pont de Nemours & Company be
  212. #  liable for any special, indirect or consequential damages or any
  213. #  damages whatsoever resulting from loss of use, data or profits, whether
  214. #  in an action of contract, negligence or other tortious action, arising
  215. #  out of or in connection with the use or performance of this software.
  216. #
  217. X
  218. #
  219. # Uncomment the following lines if you have the JPEG or TIFF libraries.
  220. # See README for more details.
  221. #
  222. #JPEG= -DAlienJPEG
  223. #JPEG_LIBRARIES= -Ljpeg -ljpeg
  224. #JPEG_INCLUDES= -Ijpeg
  225. #TIFF= -DAlienTIFF
  226. #TIFF_LIBRARIES= -Ltiff/libtiff -ltiff
  227. #TIFF_INCLUDES= -Itiff/libtiff
  228. X
  229. XXLIB= -L/usr/lib/X11R4 -lX11
  230. X
  231. CC= cc -O -I/usr/include/X11R4
  232. DESTDIR= /usr/bin/X11
  233. INSTALL = install -c
  234. RM= /bin/rm -f
  235. X
  236. DEFINES= $(JPEG) $(JPEG_INCLUDES) $(TIFF) $(TIFF_INCLUDES)
  237. SYS_LIBRARIES= $(XLIB) $(JPEG_LIBRARIES) $(TIFF_LIBRARIES) -lm
  238. X
  239. MagickObjects= X.o image.o rotate.o quantize.o colors.o signature.o compress.o\
  240. X  alien.o PreRvIcccm.o
  241. X
  242. DisplayObjects= display.o $(MagickObjects)
  243. AnimateObjects= animate.o $(MagickObjects)
  244. ImportObjects= import.o $(MagickObjects)
  245. MontageObjects= montage.o $(MagickObjects)
  246. XXtoPSObjects= XtoPS.o $(MagickObjects)
  247. X
  248. PROGRAMS= display animate montage XtoPS import
  249. X
  250. CFLAGS= $(DEFINES)
  251. X
  252. all: $(PROGRAMS)
  253. X
  254. display: $(DisplayObjects)
  255. X    $(RM) $@
  256. X    $(CC) -o $@ $(DisplayObjects) $(SYS_LIBRARIES)
  257. X
  258. clean::
  259. X    $(RM) display
  260. X
  261. install:: display
  262. X    $(INSTALL) display $(DESTDIR)
  263. X
  264. animate: $(AnimateObjects)
  265. X    $(RM) $@
  266. X    $(CC) -o $@ $(AnimateObjects) $(SYS_LIBRARIES)
  267. X
  268. clean::
  269. X    $(RM) animate
  270. X
  271. install:: animate
  272. X    $(INSTALL) animate $(DESTDIR)
  273. X
  274. montage: $(MontageObjects)
  275. X    $(RM) $@
  276. X    $(CC) -o $@ $(MontageObjects) $(SYS_LIBRARIES)
  277. X
  278. clean::
  279. X    $(RM) montage
  280. X
  281. install:: montage
  282. X    $(INSTALL) montage $(DESTDIR)
  283. X
  284. XXtoPS: $(XtoPSObjects)
  285. X    $(RM) $@
  286. X    $(CC) -o $@ $(XtoPSObjects) $(SYS_LIBRARIES)
  287. X
  288. clean::
  289. X    $(RM) XtoPS
  290. X
  291. install:: XtoPS
  292. X    $(INSTALL) XtoPS $(DESTDIR)
  293. X
  294. import: $(ImportObjects)
  295. X    $(RM) $@
  296. X    $(CC) -o $@ $(ImportObjects) $(SYS_LIBRARIES)
  297. X
  298. clean::
  299. X    $(RM) import
  300. X
  301. install:: import
  302. X    $(INSTALL) import $(DESTDIR)
  303. X
  304. clean::
  305. X    $(RM) *.ln *.bak *.o core errs ,* *~ *.a .emacs_* make.log MakeOut
  306. SHAR_EOF
  307. chmod 0644 ImageMagick/Makefile ||
  308. echo 'restore of ImageMagick/Makefile failed'
  309. Wc_c="`wc -c < 'ImageMagick/Makefile'`"
  310. test 3144 -eq "$Wc_c" ||
  311.     echo 'ImageMagick/Makefile: original size 3144, current size' "$Wc_c"
  312. rm -f _shar_wnt_.tmp
  313. fi
  314. # ============= ImageMagick/PreRvIcccm.c ==============
  315. if test -f 'ImageMagick/PreRvIcccm.c' -a X"$1" != X"-c"; then
  316.     echo 'x - skipping ImageMagick/PreRvIcccm.c (File already exists)'
  317.     rm -f _shar_wnt_.tmp
  318. else
  319. > _shar_wnt_.tmp
  320. echo 'x - extracting ImageMagick/PreRvIcccm.c (Text)'
  321. sed 's/^X//' << 'SHAR_EOF' > 'ImageMagick/PreRvIcccm.c' &&
  322. #include "display.h"
  323. #include "image.h"
  324. #include "alien.h"
  325. #include "X.h"
  326. X
  327. #ifdef PRE_R5_ICCCM
  328. /*
  329. X  Compatibility routines for pre X11R5 ICCCM.
  330. */
  331. XXrmDatabase XrmGetDatabase(display)
  332. Display
  333. X  *display;
  334. {
  335. X  return(display->db);
  336. }
  337. #endif
  338. X
  339. #ifdef PRE_R4_ICCCM
  340. /*
  341. X  Compatibility routines for pre X11R4 ICCCM.
  342. */
  343. XXClassHint *XAllocClassHint()
  344. {
  345. X  return((XClassHint *) malloc(sizeof(XClassHint)));
  346. }
  347. X
  348. XXIconSize *XAllocIconSize()
  349. {
  350. X  return((XIconSize *) malloc(sizeof(XIconSize)));
  351. }
  352. X
  353. XXSizeHints *XAllocSizeHints()
  354. {
  355. X  return((XSizeHints *) malloc(sizeof(XSizeHints)));
  356. }
  357. X
  358. Status XReconfigureWMWindow(display,window,screen_number,value_mask,values)
  359. Display
  360. X  *display;
  361. X
  362. Window
  363. X  window;
  364. X
  365. int
  366. X  screen_number;
  367. X
  368. unsigned int
  369. X  value_mask;
  370. X
  371. XXWindowChanges
  372. X  *values;
  373. {
  374. X  return(XConfigureWindow(display,window,value_mask,values));
  375. }
  376. X
  377. XXStandardColormap *XAllocStandardColormap()
  378. {
  379. X  return((XStandardColormap *) malloc(sizeof(XStandardColormap)));
  380. }
  381. X
  382. XXWMHints *XAllocWMHints()
  383. {
  384. X  return((XWMHints *) malloc(sizeof(XWMHints)));
  385. }
  386. X
  387. Status XGetRGBColormaps(display,window,colormap,count,property)
  388. Display
  389. X  *display;
  390. X
  391. Window
  392. X  window;
  393. X
  394. XXStandardColormap
  395. X  **colormap;
  396. X
  397. int
  398. X  *count;
  399. X
  400. Atom
  401. X  property;
  402. {
  403. X  *count=1;
  404. X  return(XGetStandardColormap(display,window,colormap,property));
  405. }
  406. X
  407. Status XGetWMName(display,window,text_property)
  408. Display
  409. X  *display;
  410. X
  411. Window
  412. X  window;
  413. X
  414. XXTextProperty
  415. X  *text_property;
  416. {
  417. X  char
  418. X    *window_name;
  419. X
  420. X  if (XFetchName(display,window,&window_name) == 0)
  421. X    return(False);
  422. X  text_property->value=(unsigned char *) window_name;
  423. X  text_property->encoding=XA_STRING;
  424. X  text_property->format=8;
  425. X  text_property->nitems=strlen(window_name);
  426. X  return(True);
  427. }
  428. X
  429. char *XResourceManagerString(display)
  430. Display
  431. X  *display;
  432. {
  433. X  return display->xdefaults;
  434. }
  435. X
  436. void XrmDestroyDatabase(database)
  437. XXrmDatabase
  438. X  database;
  439. {
  440. }
  441. X
  442. int XSetWMName(display,window,property)
  443. Display
  444. X  *display;
  445. X
  446. Window
  447. X  window;
  448. X
  449. XXTextProperty
  450. X  *property;
  451. {
  452. X  XStoreName(display,window,property->value);
  453. }
  454. X
  455. int XStringListToTextProperty(argv,argc,property)
  456. char
  457. X  **argv;
  458. X
  459. int
  460. X  argc;
  461. X
  462. XXTextProperty
  463. X  *property;
  464. {
  465. X  register int
  466. X    i;
  467. X
  468. X  register unsigned int
  469. X    number_bytes;
  470. X
  471. X  XTextProperty
  472. X     protocol;
  473. X
  474. X  number_bytes=0;
  475. X  for (i=0; i < argc; i++)
  476. X    number_bytes+=(unsigned int) ((argv[i] ? strlen(argv[i]) : 0)+1);
  477. X  protocol.encoding=XA_STRING;
  478. X  protocol.format=8;
  479. X  protocol.nitems=0;
  480. X  if (number_bytes)
  481. X    protocol.nitems=number_bytes-1;
  482. X  protocol.value=NULL;
  483. X  if (number_bytes <= 0)
  484. X    {
  485. X      protocol.value=(unsigned char *) malloc(sizeof(char));
  486. X      if (!protocol.value)
  487. X        return(False);
  488. X      *protocol.value='\0';
  489. X    }
  490. X  else
  491. X    {
  492. X      register char
  493. X        *buffer;
  494. X
  495. X      buffer=(char *) malloc(number_bytes*sizeof(char));
  496. X      if (buffer == (char *) NULL)
  497. X        return(False);
  498. X      protocol.value=(unsigned char *) buffer;
  499. X      for (i=0; i < argc; i++)
  500. X      {
  501. X        char
  502. X          *argument;
  503. X
  504. X        argument=argv[i];
  505. X        if (!argument)
  506. X          *buffer++='\0';
  507. X        else
  508. X          {
  509. X            (void) strcpy(buffer,argument);
  510. X            buffer+=(strlen(argument)+1);
  511. X          }
  512. X      }
  513. X    }
  514. X  *property=protocol;
  515. X  return(True);
  516. }
  517. X
  518. void XSetWMProperties(display,window,window_name,icon_name,argv,argc,
  519. X  size_hints,manager_hints,class_hint)
  520. Display
  521. X  *display;
  522. X
  523. Window
  524. X  window;
  525. X
  526. XXTextProperty
  527. X  *window_name,
  528. X  *icon_name;
  529. X
  530. char
  531. X  **argv;
  532. X
  533. int
  534. X  argc;
  535. X
  536. XXSizeHints
  537. X  *size_hints;
  538. X
  539. XXWMHints *manager_hints;
  540. X
  541. XXClassHint
  542. X  *class_hint;
  543. {
  544. X  XSetStandardProperties(display,window,window_name->value,icon_name,None,
  545. X    argv,argc,size_hints);
  546. X  XSetWMHints(display,window,manager_hints);
  547. X  XSetClassHint(display,window,class_hint);
  548. }
  549. X
  550. Status XSetWMProtocols(display,window,protocols,count)
  551. Display
  552. X  *display;
  553. X
  554. Window
  555. X  window;
  556. X
  557. Atom
  558. X  *protocols;
  559. X
  560. int
  561. X  count;
  562. {
  563. X  Atom
  564. X    protocols_property;
  565. X
  566. X  protocols_property=XInternAtom(display,"WM_PROTOCOLS",False);
  567. X  XChangeProperty(display,window,protocols_property,XA_ATOM,32,PropModeReplace,
  568. X    (unsigned char *) protocols, count);
  569. X  return(True);
  570. }
  571. X
  572. VisualID XVisualIDFromVisual(visual)
  573. Visual
  574. X  *visual;
  575. {
  576. X  return(visual->visualid);
  577. }
  578. X
  579. Status XWithdrawWindow(display,window,screen)
  580. Display
  581. X  *display;
  582. X
  583. Window
  584. X  window;
  585. X
  586. int
  587. X  screen;
  588. {
  589. X  return(XUnmapWindow(display,window));
  590. }
  591. X
  592. int XWMGeometry(display,screen,user_geometry,default_geometry,border_width,
  593. X  size_hints,x,y,width,height,gravity)
  594. Display
  595. X  *display;
  596. X
  597. int
  598. X  screen;
  599. X
  600. char
  601. X  *user_geometry,
  602. X  *default_geometry;
  603. X
  604. unsigned int
  605. X  border_width;
  606. X
  607. XXSizeHints
  608. X  *size_hints;
  609. X
  610. int
  611. X  *x,
  612. X  *y,
  613. X  *width,
  614. X  *height,
  615. X  *gravity;
  616. {
  617. X  int
  618. X    status;
  619. X
  620. X  status=XGeometry(display,screen,user_geometry,default_geometry,border_width,
  621. X    0,0,0,0,x,y,width,height);
  622. X  *gravity=NorthWestGravity;
  623. X  return(status);
  624. }
  625. #endif
  626. SHAR_EOF
  627. chmod 0644 ImageMagick/PreRvIcccm.c ||
  628. echo 'restore of ImageMagick/PreRvIcccm.c failed'
  629. Wc_c="`wc -c < 'ImageMagick/PreRvIcccm.c'`"
  630. test 4759 -eq "$Wc_c" ||
  631.     echo 'ImageMagick/PreRvIcccm.c: original size 4759, current size' "$Wc_c"
  632. rm -f _shar_wnt_.tmp
  633. fi
  634. # ============= ImageMagick/README ==============
  635. if test -f 'ImageMagick/README' -a X"$1" != X"-c"; then
  636.     echo 'x - skipping ImageMagick/README (File already exists)'
  637.     rm -f _shar_wnt_.tmp
  638. else
  639. > _shar_wnt_.tmp
  640. echo 'x - extracting ImageMagick/README (Text)'
  641. sed 's/^X//' << 'SHAR_EOF' > 'ImageMagick/README' &&
  642. AUTHOR
  643. X
  644. X  The author is cristy@dupont.com.  Comments, suggestions, or bug
  645. X  reports are welcome, but be kind.
  646. X
  647. X
  648. AVAILABLILITY
  649. X
  650. X  Anonymous FTP at export.lcs.mit.edu, file contrib/ImageMagick.tar.Z.
  651. X
  652. X
  653. UNIX COMPILATION
  654. X
  655. X  Type:
  656. X
  657. X    uncompress ImageMagick.tar.Z
  658. X    tar xvf ImageMagick.tar
  659. X    cd ImageMagick
  660. X    xmkmf
  661. X    make Makefiles
  662. X    make
  663. X
  664. X  If you do not have 'xmkmf', edit 'Makefile' as required by your
  665. X  hardware environment and type 'make'.
  666. X
  667. X  Finally type:
  668. X
  669. X    display images/aquarium.miff
  670. X    display -monochrome -dither images/aquarium.miff
  671. X
  672. X  If the image colors are not correct use this command:
  673. X
  674. X    display -visual default images/aquarium.miff
  675. X
  676. X  You can find other example images in the 'images' directory.
  677. X
  678. X  Be sure to read the manual pages for the display, animate, montage,
  679. X  XtoPS, import, mogrify, and convert utilities.
  680. X
  681. X  The ImageMagick utilites read and write MIFF images.  Refer to the
  682. X  end of this message for more information about MIFF.  Use `convert'
  683. X  to convert images to and from the MIFF format.
  684. X
  685. X  Some ImageMagick utilities recognizes these `alien' image formats:
  686. X
  687. X    GIF
  688. X    JPEG
  689. X    Postscript
  690. X    PPM
  691. X    RLE
  692. X    SUN Raster
  693. X    TIFF
  694. X    Utah Raster
  695. X    VICAR
  696. X    X Bitmap
  697. X    X Window Dump
  698. X
  699. X  and for your convenience automatically converts the alien image
  700. X  format to MIFF at execution time.  However, the MIFF image format has
  701. X  several advantages over most image formats (i.e. runlength encoding,
  702. X  digital signature on an image colormap, etc.).  ImageMagick is
  703. X  designed to exploit these advantages.  Whenever possible convert an
  704. X  alien image format to the MIFF format before using the various
  705. X  ImageMagick programs.
  706. X
  707. X  Other alien formats are also recognized.  See CONVERT(1) for a list
  708. X  of valid image formats.  You can specify a particular image format by
  709. X  prefixing the image filename with the image type and a colon (i.e.
  710. X  mtv:image.mtv).
  711. X
  712. X  ImageMagick requires GNU's Ghostscript software available via FTP as
  713. X  ftp.uu.net:systems/gnu/ghostscript-2.5.2.tar.Z to read the
  714. X  Postscript format.  For ImageMagick to read Postscript files, `gs'
  715. X  must be in your execution path and the `ppmraw' device must be
  716. X  recognized.  Add it to your 'DEVICE_DEVS' define in your `Makefile'
  717. X  and recompile.
  718. X
  719. X  ImageMagick requires the Independent JPEG Group's software available via 
  720. X  FTP as ftp.uu.net:graphics/jpeg/jpegsrc.v4.tar.Z to read the JPEG image
  721. X  format.
  722. X
  723. X  ImageMagick requires Sam Leffler's TIFF software available via FTP as 
  724. X  sgi.com:graphics/tiff/v3.2beta.tar.Z to read the TIFF image format.
  725. X
  726. X  To display images in the JPEG or TIFF format, get the JPEG and TIFF
  727. X  archives and build ImageMagick as follows:
  728. X
  729. X    cd ImageMagick
  730. X    mkdir jpeg
  731. X    cd jpeg
  732. X    zcat jpegsrc.v4.tar.Z | tar xvf -
  733. X    cp jmemnobs.c jmemsys.c
  734. X    cp makefile.unix Makefile
  735. X    make libjpeg.a
  736. X    cd ..
  737. X    mkdir tiff
  738. X    cd tiff
  739. X    zcat v3.2beta.tar.Z | tar xvf -
  740. X    cd libtiff
  741. X    cp Makefile.sun Makefile
  742. X    make
  743. X    cd ../..
  744. X    < edit Magick.tmpl and uncomment JPEG and TIFF lines as instructed >
  745. X    touch alien.c
  746. X    xmkmf
  747. X    make Makefiles
  748. X    make
  749. X
  750. X  You can now display images in the JPEG or TIFF format.
  751. X
  752. X  If you have a colormapped X server, the number of unique colors in an
  753. X  image must first be reduced to match the requirements of your server
  754. X  before it can be displayed.  ImageMagick tries to make the color reduced
  755. X  image closely resemble the original.  However, this process can be
  756. X  time consuming.  To speed it up, ImageMagick trades image quality for
  757. X  processing time.  For the "best" image possible, type
  758. X
  759. X      display -colors 256 -dither image.jpeg
  760. X
  761. X  or add this to your X resources file:
  762. X
  763. X      display.colors: 256
  764. X
  765. X  This example assumes your server supports 256 colors.  Choose
  766. X  whatever value is appropriate for your X server.  Alternatively if
  767. X  you intend to view the image frequently, reduce the number of colors
  768. X  to match the resolution of your X server once and write to a new
  769. X  image.  Then display this new image.  For example,
  770. X
  771. X      convert -colors 256 -dither image.jpeg image.miff
  772. X      display image.miff
  773. X
  774. X
  775. VMS COMPILATION
  776. X
  777. X  Type
  778. X
  779. X    @make
  780. X    set display/create/node=node_name::
  781. X
  782. X  where node_name is the DECNET X server to contact.
  783. X
  784. X  Finally type:
  785. X
  786. X    display images/aquarium.miff
  787. X    display -monochrome -dither images/aquarium.miff
  788. X
  789. X
  790. ANIMATION
  791. X
  792. X  An example animation sequence is available from anonymous FTP at
  793. X  export.lcs.mit.edu, file contrib/ImageMagick.animation.tar.Z Or
  794. X  alternatively, you can create this sequence yourself.  Just look at
  795. X  README in the scenes directory.
  796. X  
  797. X  To prevent color flashing on visuals that have colormaps, `animate'
  798. X  creates a single colormap from the image sequence.  This can be
  799. X  rather time consuming.  You can speed this operation up by reducing
  800. X  the colors in the image before you `animate' them.  Use `mogrify' to
  801. X  color reduce the images:
  802. X
  803. X    mogrify -colors 256 scenes/dna.[0-9]*
  804. X
  805. X  Note, the image sequence in ImageMagick.animation.tar.Z is already
  806. X  reduced.  Alternatively, you can use a Standard Colormap; or a
  807. X  static, direct, or true color visual.  You can define a Standard
  808. X  Colormap with `xstdcmap'.  For example, to use the "best" Standard
  809. X  Colormap, type:
  810. X
  811. X    xstdcmap -best
  812. X    animate -map best scenes/dna.[0-9]*
  813. X
  814. X  or to use a true color visual:
  815. X
  816. X    animate -visual truecolor scenes/dna.[0-9]*
  817. X
  818. X  Image filenames can appear in any order on the command line if the
  819. X  scene keyword is specified in the MIFF image.  Otherwise the images
  820. X  display in the order they appear on the command line.  A scene is
  821. X  specified when converting from another image format to MIFF by using
  822. X  the "scene" option with any filter.  Be sure to choose a scene number
  823. X  other than zero.  For example, to convert a TIFF image to a MIFF
  824. X  image as scene #2, type:
  825. X
  826. X    convert -scene 2 image.tiff image.miff
  827. X
  828. X
  829. NOTES
  830. X
  831. X  1.  If you get a compile error on XTextProperty in PreRvIcccm.h,
  832. X      change it to _XTextProperty. If you get a compile error on
  833. X      XVisualIDFromVisual in PreRvIcccm.c, change it to
  834. X      _XVisualIDFromVisual.
  835. X
  836. X  2.  24 bit images are reduced to 244 colors on an 8 bit display to
  837. X      help prevent colormap flashing.  If you want all 256 colors, type
  838. X
  839. X        display -colors 256 image.miff
  840. X
  841. X      To further help reduce colormap flashing, do not install the
  842. X      default standard colormap (RGB_DEFAULT_MAP).
  843. X
  844. X  3.  Machine dependancies:
  845. X
  846. X      For MacX, set the DISPLAY variable to host:0.2 for the color
  847. X      rootless window.
  848. X
  849. X      I suspect all the following problems will be fixed when these
  850. X      vendors upgrade to X11R4.  I find conditional compilation
  851. X      statements offensive.  So if you have any of the following
  852. X      problems, the fix must be applied manually.
  853. X
  854. X      MIPS does not always generate exposure events correctly when
  855. X      displaying a monochrome image on their color server.  Holes in the
  856. X      image may appear when an area is blocked then exposed.  I do not
  857. X      currently have a solution for this problem.
  858. X
  859. X      Images do not dislay correctly on the IBM R6000 visual with 4096
  860. X      colors.  However they do display correctly on the visual with 256
  861. X      colors.  Until IBM fixes their server, type xdpyinfo to determine 
  862. X      the ID of the 256 color visual and type
  863. X
  864. X        display -visual 0x???? image.miff
  865. X
  866. X      On the Stardent put
  867. X
  868. X        *installColormap:  on
  869. X
  870. X      in your X resource file.
  871. X
  872. X      Digital and Tektronix has a bug in their servers.  When converting
  873. X      from LSBFirst to MSBFirst X server (or visa-versa) you may get the 
  874. X      error
  875. X
  876. X        Illegal unit size: 8 found in routine: _normalizeimagebits
  877. X
  878. X  4.  On occasion, a window manager (twm) may get in strange state which will 
  879. X      cause the display program to work improperly.  Fix this by restarting the
  880. X      window manager.
  881. X
  882. X  5.  If the image is displayed with incorrect colors, try using a different
  883. X      visual.  Type xdpyinfo and choose an alternative visual (if one exists)
  884. X      by either visual class or visual id.  For example, to specifically 
  885. X      choose a PseudoColor visual on a server that supports it, type
  886. X
  887. X        display -visual pseudocolor image.miff
  888. X
  889. X  6.  Make sure that the include file math.h defines the function atof as
  890. X      type double.  Otherwise the -gamma option will not work properly.
  891. X
  892. X
  893. MIFF IMAGE FORMAT
  894. X
  895. X  MIFF is an image format, which I developed.  I like it because it
  896. X
  897. X    1) It is machine independant.  It can be read on virtually any
  898. X       computer.  No byte swapping is necessary.
  899. X
  900. X    2) It has a text header.  Most image formats are coded in binary
  901. X       and you cannot easily tell attributes about the image.  Use
  902. X       'more' on MIFF image files and the attributes are displayed in
  903. X       text form.
  904. X
  905. X    3) It can handle runlength-encoded images.  Although most scanned
  906. X       images do not benefit from runlength-encoding, most
  907. X       computer-generated images do.  Images of mostly uniform colors
  908. X       have a high compression ratio and therefore take up less memory
  909. X       and disk space.
  910. X
  911. X    4) It allows a scene number to be specified.  This allows you to
  912. X       specify an animation sequence out-of-order on the command line.
  913. X       The correct order is determined by the scene number of each
  914. X       image.
  915. X
  916. X    5) MIFF computes a digital signature for colormapped images.  This
  917. X       is useful for animating a sequence of images on a colormapped X
  918. X       server.  If all signatures match in the image sequence,
  919. X       computing a global colormap is not necessary.
  920. X
  921. X  One way to get an image into MIFF format is to use `convert'.  or
  922. X  read it from an X window using the 'import' program.  Alternatively,
  923. X  type the necessary header information in a file with a text editor.
  924. X  Next, dump the binary bytes into another file.  Finally, type
  925. X
  926. X    cat header binary_image | display -write image.miff -
  927. X
  928. X  For example, suppose you have a raw red, green, blue image file on
  929. X  disk that is 640 by 480.  The header file would look like this:
  930. X
  931. X    id=ImageMagick columns=640 rows=480 :
  932. X
  933. X  The image file would have red, green, blue tuples (rgbrgbrgb...).
  934. X
  935. X  Refer to the 'display' manual page for more details.
  936. X
  937. ACKNOWLEDGEMENTS
  938. X
  939. X  o Dirk Wetzel <wetzel@forwiss.uni-erlangen.de> fixed the select statement 
  940. X    in animate.c.
  941. X
  942. X  o Eric Haines <erich@eye.com> fixed ReadRLEImage in alien.c.  It previously
  943. X    did not check to see if the background color was present in the image.
  944. X
  945. X
  946. COPYRIGHT
  947. X
  948. X  Copyright 1992 E. I. du Pont de Nemours & Company
  949. X
  950. X  Permission to use, copy, modify, distribute, and sell this software and
  951. X  its documentation for any purpose is hereby granted without fee,
  952. X  provided that the above copyright notice appear in all copies and that
  953. X  both that copyright notice and this permission notice appear in
  954. X  supporting documentation, and that the name of E. I. du Pont de Nemours
  955. X  & Company not be used in advertising or publicity pertaining to
  956. X  distribution of the software without specific, written prior
  957. X  permission.  E. I. du Pont de Nemours & Company makes no representations
  958. X  about the suitability of this software for any purpose.  It is provided
  959. X  "as is" without express or implied warranty.
  960. X
  961. X  E. I. du Pont de Nemours & Company disclaims all warranties with regard
  962. X  to this software, including all implied warranties of merchantability
  963. X  and fitness, in no event shall E. I. du Pont de Nemours & Company be
  964. X  liable for any special, indirect or consequential damages or any
  965. X  damages whatsoever resulting from loss of use, data or profits, whether
  966. X  in an action of contract, negligence or other tortious action, arising
  967. X  out of or in connection with the use or performance of this software.
  968. SHAR_EOF
  969. chmod 0644 ImageMagick/README ||
  970. echo 'restore of ImageMagick/README failed'
  971. Wc_c="`wc -c < 'ImageMagick/README'`"
  972. test 11672 -eq "$Wc_c" ||
  973.     echo 'ImageMagick/README: original size 11672, current size' "$Wc_c"
  974. rm -f _shar_wnt_.tmp
  975. fi
  976. # ============= ImageMagick/XtoPS.c ==============
  977. if test -f 'ImageMagick/XtoPS.c' -a X"$1" != X"-c"; then
  978.     echo 'x - skipping ImageMagick/XtoPS.c (File already exists)'
  979.     rm -f _shar_wnt_.tmp
  980. else
  981. > _shar_wnt_.tmp
  982. echo 'x - extracting ImageMagick/XtoPS.c (Text)'
  983. sed 's/^X//' << 'SHAR_EOF' > 'ImageMagick/XtoPS.c' &&
  984. /*
  985. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  986. %                                                                             %
  987. %                                                                             %
  988. %                     X   X  TTTTT   OOO   PPPP   SSSSS                       %
  989. %                      X X     T    O   O  P   P  S                           %
  990. %                       X      T    O   O  PPPP    SSS                        %
  991. %                      X X     T    O   O  P          S                       %
  992. %                     X   X    T     OOO   P      SSSSS                       %
  993. %                                                                             %
  994. %                                                                             %
  995. %                  Import X11 image to a Postscript format.                   %
  996. %                                                                             %
  997. %                                                                             %
  998. %                           Software Design                                   %
  999. %                             John Cristy                                     %
  1000. %                              July 1992                                      %
  1001. %                                                                             %
  1002. %                                                                             %
  1003. %  Copyright 1992 E. I. du Pont de Nemours & Company                          %
  1004. %                                                                             %
  1005. %  Permission to use, copy, modify, distribute, and sell this software and    %
  1006. %  its documentation for any purpose is hereby granted without fee,           %
  1007. %  provided that the above Copyright notice appear in all copies and that     %
  1008. %  both that Copyright notice and this permission notice appear in            %
  1009. %  supporting documentation, and that the name of E. I. du Pont de Nemours    %
  1010. %  & Company not be used in advertising or publicity pertaining to            %
  1011. %  distribution of the software without specific, written prior               %
  1012. %  permission.  E. I. du Pont de Nemours & Company makes no representations   %
  1013. %  about the suitability of this software for any purpose.  It is provided    %
  1014. %  "as is" without express or implied warranty.                               %
  1015. %                                                                             %
  1016. %  E. I. du Pont de Nemours & Company disclaims all warranties with regard    %
  1017. %  to this software, including all implied warranties of merchantability      %
  1018. %  and fitness, in no event shall E. I. du Pont de Nemours & Company be       %
  1019. %  liable for any special, indirect or consequential damages or any           %
  1020. %  damages whatsoever resulting from loss of use, data or profits, whether    %
  1021. %  in an action of contract, negligence or other tortious action, arising     %
  1022. %  out of or in connection with the use or performance of this software.      %
  1023. %                                                                             %
  1024. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1025. %
  1026. %  XtoPS is an X Window System window dumping utility.  XtoPS reads an
  1027. %  image from any visible window on an X server and outputs it to an
  1028. %  encapsulated Postscript file.  You can view this file with any
  1029. %  Postscript compatible viewer or printer.  The image is displayed in
  1030. %  color on viewers or printers that support color Postscript, otherwise
  1031. %  it is displayed as grayscale.  The target window can be specified by id
  1032. %  or name or be selected by clicking the mouse in the desired window.
  1033. %  The keyboard bell is rung once at the beginning of the dump and twice
  1034. %  when the dump is completed.
  1035. %
  1036. %  The XtoPS program command syntax is:
  1037. %
  1038. %  Usage: XtoPS [options ...] file
  1039. %
  1040. %  Where options include:
  1041. %    -border             include image borders in the output image
  1042. %    -delay seconds      pause before selecting target window
  1043. %    -display server     X server to contact
  1044. %    -frame              include window manager frame
  1045. %    -geometry geometry  preferred size and location of the image
  1046. %    -monochrome         transform image to black and white
  1047. %    -rotate degrees     apply Paeth rotation to the image
  1048. %    -scale geometry     preferred size factors of the image
  1049. %    -screen             select image from root window
  1050. %    -verbose            print detailed information about the image
  1051. %    -window id          select window with this id or name
  1052. %
  1053. %  Change '-' to '+' in any option above to reverse its effect.
  1054. %  For example, +frame means do not window manager frame.
  1055. %
  1056. %  Specify 'file' as '-' for standard input or output.
  1057. %
  1058. %
  1059. */
  1060. X
  1061. /*
  1062. X  Include declarations.
  1063. */
  1064. #include "display.h"
  1065. #include "image.h"
  1066. #include "alien.h"
  1067. #include "X.h"
  1068. X
  1069. /*
  1070. X  Global declarations.
  1071. */
  1072. char
  1073. X  *application_name;
  1074. X
  1075. /*
  1076. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1077. %                                                                             %
  1078. %                                                                             %
  1079. %                                                                             %
  1080. %   E r r o r                                                                 %
  1081. %                                                                             %
  1082. %                                                                             %
  1083. %                                                                             %
  1084. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1085. %
  1086. %  Function Error displays an error message and then terminates the program.
  1087. %
  1088. %  The format of the Error routine is:
  1089. %
  1090. %      Error(message,qualifier)
  1091. %
  1092. %  A description of each parameter follows:
  1093. %
  1094. %    o message: Specifies the message to display before terminating the
  1095. %      program.
  1096. %
  1097. %    o qualifier: Specifies any qualifier to the message.
  1098. %
  1099. %
  1100. */
  1101. void Error(message,qualifier)
  1102. char
  1103. X  *message,
  1104. X  *qualifier;
  1105. {
  1106. X  (void) fprintf(stderr,"%s: %s",application_name,message);
  1107. X  if (qualifier != (char *) NULL)
  1108. X    (void) fprintf(stderr," (%s)",qualifier);
  1109. X  (void) fprintf(stderr,".\n");
  1110. X  exit(1);
  1111. }
  1112. X
  1113. /*
  1114. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1115. %                                                                             %
  1116. %                                                                             %
  1117. %                                                                             %
  1118. %   U s a g e                                                                 %
  1119. %                                                                             %
  1120. %                                                                             %
  1121. %                                                                             %
  1122. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1123. %
  1124. %  Procedure Usage displays the program usage;
  1125. %
  1126. %  The format of the Usage routine is:
  1127. %
  1128. %      Usage()
  1129. %
  1130. %
  1131. */
  1132. static void Usage()
  1133. {
  1134. X  char
  1135. X    **p;
  1136. X
  1137. X  static char
  1138. X    *options[]=
  1139. X    {
  1140. X      "-border             include image borders in the output image",
  1141. X      "-delay seconds      pause before selecting target window",
  1142. X      "-display server     X server to contact",
  1143. X      "-frame              include window manager frame",
  1144. X      "-geometry geometry  preferred size and location of the image",
  1145. X      "-monochrome         transform image to black and white",
  1146. X      "-rotate degrees     apply Paeth rotation to the image",
  1147. X      "-scale geometry     preferred size factors of the image",
  1148. X      "-screen             select image from root window",
  1149. X      "-verbose            print detailed information about the image",
  1150. X      "-window id          select window with this id or name",
  1151. X      (char *) NULL
  1152. X    };
  1153. X  (void) fprintf(stderr,"Usage: %s [options ...] file\n",application_name);
  1154. X  (void) fprintf(stderr,"\nWhere options include:\n");
  1155. X  for (p=options; *p != (char *) NULL; p++)
  1156. X    (void) fprintf(stderr,"  %s\n",*p);
  1157. X  (void) fprintf(stderr,
  1158. X    "\nChange '-' to '+' in any option above to reverse its effect.\n");
  1159. X  (void) fprintf(stderr,
  1160. X    "For example, +frame means do not include window manager frame.\n");
  1161. X  (void) fprintf(stderr,"\nSpecify 'file' as '-' for standard output.\n");
  1162. X  exit(1);
  1163. }
  1164. X
  1165. /*
  1166. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1167. %                                                                             %
  1168. %                                                                             %
  1169. %                                                                             %
  1170. %    M a i n                                                                  %
  1171. %                                                                             %
  1172. %                                                                             %
  1173. %                                                                             %
  1174. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1175. %
  1176. %
  1177. */
  1178. int main(argc,argv)
  1179. int
  1180. X  argc;
  1181. X
  1182. char
  1183. X  *argv[];
  1184. {
  1185. X  char
  1186. X    *filename,
  1187. X    *image_geometry,
  1188. X    *option,
  1189. X    *resource_value,
  1190. X    *scale_geometry,
  1191. X    *server_name,
  1192. X    *target_window;
  1193. X
  1194. X  Display
  1195. X    *display;
  1196. X
  1197. X  Image
  1198. X    *image;
  1199. X
  1200. X  int
  1201. X    degrees,
  1202. X    i,
  1203. X    x;
  1204. X
  1205. X  time_t
  1206. X    start_time;
  1207. X
  1208. X  unsigned int
  1209. X    borders,
  1210. X    frame,
  1211. X    screen,
  1212. X    verbose;
  1213. X
  1214. X  XResourceInfo
  1215. X    resource_info;
  1216. X
  1217. X  XrmDatabase
  1218. X    resource_database,
  1219. X    server_database;
  1220. X
  1221. X  /*
  1222. X    Display usage profile if there are no command line arguments.
  1223. X  */
  1224. X  application_name=(*argv);
  1225. X  if (argc < 2)
  1226. X    Usage();
  1227. X  /*
  1228. X    Connect to X server.
  1229. X  */
  1230. X  server_name=(char *) NULL;
  1231. X  for (i=1; i < argc; i++)
  1232. X  {
  1233. X    /*
  1234. X      Check command line for server name.
  1235. X    */
  1236. X    option=argv[i];
  1237. X    if (((int) strlen(option) > 1) && ((*option == '-') || (*option == '+')))
  1238. X      if (strncmp("dis",option+1,3) == 0)
  1239. X        {
  1240. X          /*
  1241. X            User specified server name.
  1242. X          */
  1243. X          i++;
  1244. X          if (i == argc)
  1245. X            Error("missing server name on -display",(char *) NULL);
  1246. X          server_name=argv[i];
  1247. X          break;
  1248. X        }
  1249. X  }
  1250. X  display=XOpenDisplay(server_name);
  1251. X  if (display == (Display *) NULL)
  1252. X    Error("unable to connect to X server",XDisplayName(server_name));
  1253. X  /*
  1254. X    Set our forgiving error handler.
  1255. X  */
  1256. X  XSetErrorHandler(XError);
  1257. X  /*
  1258. X    Initialize resource database.
  1259. X  */
  1260. X  XrmInitialize();
  1261. X  resource_database=XrmGetDatabase(display);
  1262. X  resource_value=XResourceManagerString(display);
  1263. X  if (resource_value == (char *) NULL)
  1264. X    resource_value="";
  1265. X  server_database=XrmGetStringDatabase(resource_value);
  1266. X  XrmMergeDatabases(server_database,&resource_database);
  1267. X  /*
  1268. X    Get user defaults from X resource database.
  1269. X  */
  1270. X  XGetResourceInfo(resource_database,application_name,&resource_info);
  1271. X  resource_value=XGetResource(resource_database,application_name,"borders",
  1272. X    (char *) NULL,"False");
  1273. X  borders=IsTrue(resource_value);
  1274. X  resource_value=XGetResource(resource_database,application_name,"frame",
  1275. X    (char *) NULL,"False");
  1276. X  frame=IsTrue(resource_value);
  1277. X  image_geometry=XGetResource(resource_database,application_name,
  1278. X    "imageGeometry","ImageGeometry",(char *) NULL);
  1279. X  resource_value=XGetResource(resource_database,application_name,"rotate",
  1280. X    (char *) NULL,"False");
  1281. X  scale_geometry=XGetResource(resource_database,application_name,
  1282. X    "scaleGeometry","ScaleGeometry",(char *) NULL);
  1283. X  degrees=atoi(resource_value);
  1284. X  resource_value=XGetResource(resource_database,application_name,"screen",
  1285. X    (char *) NULL,"False");
  1286. X  screen=IsTrue(resource_value);
  1287. X  resource_value=XGetResource(resource_database,application_name,"verbose",
  1288. X    (char *) NULL,"False");
  1289. X  verbose=IsTrue(resource_value);
  1290. X  /*
  1291. X    Check command syntax.
  1292. X  */
  1293. X  filename=(char *) NULL;
  1294. X  target_window=(char *) NULL;
  1295. X  for (i=1; i < argc; i++)
  1296. X  {
  1297. X    option=argv[i];
  1298. X    if (((int) strlen(option) < 2) || ((*option != '-') && (*option != '+')))
  1299. X      filename=argv[i];
  1300. X    else
  1301. X      switch(*(option+1))
  1302. X      {
  1303. X        case 'b':
  1304. X        {
  1305. X          borders=(*option == '-');
  1306. X          break;
  1307. X        }
  1308. X        case 'd':
  1309. X        {
  1310. X          if (strncmp("delay",option+1,2) == 0)
  1311. X            {
  1312. X              resource_info.delay=0;
  1313. X              if (*option == '-')
  1314. X                {
  1315. X                  i++;
  1316. X                  if ((i == argc) || !sscanf(argv[i],"%d",&x))
  1317. X                    Error("missing seconds on -delay",(char *) NULL);
  1318. X                  resource_info.delay=atoi(argv[i]);
  1319. X                }
  1320. X              break;
  1321. X            }
  1322. X          if (strncmp("display",option+1,3) == 0)
  1323. X            {
  1324. X              server_name=(char *) NULL;
  1325. X              if (*option == '-')
  1326. X                {
  1327. X                  i++;
  1328. X                  if (i == argc)
  1329. X                    Error("missing server name on -display",(char *) NULL);
  1330. X                  server_name=argv[i];
  1331. X                }
  1332. X              break;
  1333. X            }
  1334. X          Error("unrecognized option",option);
  1335. X          break;
  1336. X        }
  1337. X        case 'g':
  1338. X        {
  1339. X          /*
  1340. X            User specified server name.
  1341. X          */
  1342. X          i++;
  1343. X          if (i == argc)
  1344. X            Error("missing geometry on -geometry",(char *) NULL);
  1345. X          image_geometry=argv[i];
  1346. X          break;
  1347. X        }
  1348. X        case 'h':
  1349. X        {
  1350. X          Usage();
  1351. X          break;
  1352. X        }
  1353. X        case 'f':
  1354. X        {
  1355. X          frame=(*option == '-');
  1356. X          break;
  1357. X        }
  1358. X        case 'm':
  1359. X        {
  1360. X          resource_info.monochrome=(*option == '-');
  1361. X          break;
  1362. X        }
  1363. X        case 'r':
  1364. X        {
  1365. X          degrees=0;
  1366. X          if (*option == '-')
  1367. X            {
  1368. X              i++;
  1369. X              if ((i == argc) || !sscanf(argv[i],"%d",&x))
  1370. X                Error("missing degrees on -rotate",(char *) NULL);
  1371. X              degrees=atoi(argv[i]);
  1372. X            }
  1373. X          break;
  1374. X        }
  1375. X        case 's':
  1376. X        {
  1377. X          if (strncmp("scale",option+1,4) == 0)
  1378. X            {
  1379. X              scale_geometry=(char *) NULL;
  1380. X              if (*option == '-')
  1381. X                {
  1382. X                  i++;
  1383. X                  if ((i == argc) || !sscanf(argv[i],"%f",(float *) &x))
  1384. X                    Error("missing scale geometry on -scale",(char *) NULL);
  1385. X                  scale_geometry=argv[i];
  1386. X                }
  1387. X              break;
  1388. X            }
  1389. X          if (strncmp("screen",option+1,4) == 0)
  1390. X            {
  1391. X              screen=(*option == '-');
  1392. X              break;
  1393. X            }
  1394. X          Error("unrecognized option",option);
  1395. X          break;
  1396. X        }
  1397. X        case 'v':
  1398. X        {
  1399. X          verbose=(*option == '-');
  1400. X          break;
  1401. X        }
  1402. X        case 'w':
  1403. X        {
  1404. X          i++;
  1405. X          if (i == argc)
  1406. X            Error("missing id, name, or 'root' on -window",(char *) NULL);
  1407. X          target_window=argv[i];
  1408. X          break;
  1409. X        }
  1410. X        default:
  1411. X        {
  1412. X          Error("unrecognized option",option);
  1413. X          break;
  1414. X        }
  1415. X      }
  1416. X  }
  1417. X  if (filename == (char *) NULL)
  1418. X    Error("missing an image file name",(char *) NULL);
  1419. X  /*
  1420. X    Read image from X server.
  1421. X  */
  1422. X  if (resource_info.delay > 0)
  1423. X    (void) sleep(resource_info.delay);
  1424. X  start_time=time((time_t *) 0);
  1425. X  image=ReadXImage(target_window,server_name,frame,screen,borders);
  1426. X  if (image == (Image *) NULL)
  1427. X    exit(1);
  1428. X  if (image_geometry || scale_geometry)
  1429. X    TransformImage(&image,(char *) NULL,image_geometry,scale_geometry);
  1430. X  if ((degrees % 360) != 0)
  1431. X    {
  1432. X      Image
  1433. X        *rotated_image;
  1434. X
  1435. X      /*
  1436. X        Rotate image.
  1437. X      */
  1438. X      rotated_image=RotateImage(image,(double) degrees,False);
  1439. X      if (rotated_image != (Image *) NULL)
  1440. X        {
  1441. X          DestroyImage(image);
  1442. X          image=rotated_image;
  1443. X        }
  1444. X    }
  1445. X  if (resource_info.monochrome)
  1446. X    QuantizeImage(image,2,8,False,GRAYColorspace,True);
  1447. X  (void) strcpy(image->filename,filename);
  1448. X  (void) PrintImage(image,image_geometry);
  1449. X  if (verbose)
  1450. X    {
  1451. X      /*
  1452. X        Display detailed info about the image.
  1453. X      */
  1454. X      if (image->class == DirectClass)
  1455. X        image->colors=NumberColors(image);
  1456. X      (void) fprintf(stderr,"[%u] %s %ux%u",image->scene,image->filename,
  1457. X        image->columns,image->rows);
  1458. X      if (image->class == DirectClass)
  1459. X        (void) fprintf(stderr," DirectClass ");
  1460. X      else
  1461. X        (void) fprintf(stderr," PseudoClass ");
  1462. X      (void) fprintf(stderr,"%uc %s %ds\n",image->colors,image->magick,
  1463. X        time((time_t *) 0)-start_time+1);
  1464. X    }
  1465. X  DestroyImage(image);
  1466. X  XCloseDisplay(display);
  1467. X  return(False);
  1468. }
  1469. SHAR_EOF
  1470. chmod 0644 ImageMagick/XtoPS.c ||
  1471. echo 'restore of ImageMagick/XtoPS.c failed'
  1472. Wc_c="`wc -c < 'ImageMagick/XtoPS.c'`"
  1473. test 16586 -eq "$Wc_c" ||
  1474.     echo 'ImageMagick/XtoPS.c: original size 16586, current size' "$Wc_c"
  1475. rm -f _shar_wnt_.tmp
  1476. fi
  1477. # ============= ImageMagick/XtoPS.man ==============
  1478. if test -f 'ImageMagick/XtoPS.man' -a X"$1" != X"-c"; then
  1479.     echo 'x - skipping ImageMagick/XtoPS.man (File already exists)'
  1480.     rm -f _shar_wnt_.tmp
  1481. else
  1482. > _shar_wnt_.tmp
  1483. echo 'x - extracting ImageMagick/XtoPS.man (Text)'
  1484. sed 's/^X//' << 'SHAR_EOF' > 'ImageMagick/XtoPS.man' &&
  1485. .ad l
  1486. .nh
  1487. .TH XTOPS 1 "10 October 1992" "ImageMagick"
  1488. .SH NAME
  1489. XXtoPS - capture some or all of an X server screen and save as Encapsulated
  1490. Postscript
  1491. .SH SYNOPSIS
  1492. .B "XtoPS"
  1493. [ \fIoptions\fP ... ] \fIfile\fP
  1494. .SH DESCRIPTION
  1495. .PP
  1496. .I XtoPS
  1497. reads an image from any visible window on an X server and outputs it as
  1498. Encapsulated Postscript.  You can capture a single window, the entire
  1499. screen, or any rectangular portion of the screen.  You can view the
  1500. captured screen with any Postscript compatible viewer or printer.  The
  1501. Postscript is displayed in color on viewers or printers that support
  1502. color, otherwise it is displayed as grayscale.
  1503. .PP
  1504. The target window can be specified by id, name, or may be selected by
  1505. clicking the mouse in the desired window.  If you press a button and
  1506. then drag, a rectangle will form which expands and contracts as
  1507. the mouse moves.  To save the portion of the screen defined by the
  1508. rectangle, just release the button.  The keyboard bell is rung once at
  1509. the beginning of the screen capture and twice it completes.
  1510. .SH EXAMPLES
  1511. .PP
  1512. To select an X window with the mouse and save it as Encapsulated
  1513. Postscript in a file on disk titled window.ps, use:
  1514. .PP
  1515. X     XtoPS window.ps
  1516. .PP
  1517. To select an X window and save it as Encapsulated Postscript in a file on
  1518. disk titled figure.ps to include in another document (i.e. \fBLaTeX\fP), use:
  1519. .PP
  1520. X     XtoPS -geometry +0+0 figure.ps
  1521. .PP
  1522. To capture the entire X server screen as Encapsulated Postscript in a file on
  1523. disk titled root.ps, use:
  1524. .PP
  1525. X     XtoPS -window root root.ps
  1526. .SH OPTIONS
  1527. \fIXtoPS\fP options can appear on the command line or in your X
  1528. resources file (see \fBX(1)\fP).  Options on the command line supersede
  1529. values specified in your X resources file.
  1530. .TP 5
  1531. .B "-border"
  1532. include image borders in the output image.
  1533. .TP 5
  1534. .B "-delay \fIseconds\fP"
  1535. pause before selecting target window.
  1536. X
  1537. This option is useful when you need time to ready the target window before
  1538. it is captured to a file.
  1539. .TP 5
  1540. .B "-display \fIhost:display[.screen]\fP"
  1541. specifies the X server to contact; see \fBX(1)\fP.
  1542. .TP 5
  1543. .B "-frame"
  1544. include window manager frame.
  1545. .TP 5
  1546. .B "-geometry \fI<width>x<height>{\+-}<x offset>{\+-}<y offset>\fP"
  1547. preferred size and location of the image on the Postscript page.
  1548. See \fBX(1)\fP for details about the geometry specification. By default, the
  1549. image is scaled and centered to fit on an 612x792 point Postscript page.
  1550. X
  1551. If the specified image size is smaller than the actual image size, the
  1552. image is first reduced to an integral of the specified image size with
  1553. an antialias digital filter.  The image is then scaled to the exact
  1554. specified image size with pixel replication.  If the specified image
  1555. size is greater than the actual image size, the image is first enlarged
  1556. to an integral of the specified image size with bilinear
  1557. interpolation.  The image is then scaled to the exact specified image
  1558. size with pixel replication.
  1559. .TP 5
  1560. .B "-monochrome"
  1561. transform image to black and white.
  1562. .TP 5
  1563. .B "-rotate \fIdegrees\fP"
  1564. apply Paeth image rotation to the image.
  1565. X
  1566. By default the image is output in portrait mode.  Use \fB-rotate 90\fP to
  1567. display the image in landscape mode.
  1568. .TP 5
  1569. .B "-scale \fI<width factor>x<height factor>\fP"
  1570. preferred size factors of the image.
  1571. X
  1572. This option behaves like \fB-geometry\fP except the width and height values
  1573. are relative instead of absolute.  The image size is multiplied by the
  1574. width and height factors to obtain the final image dimensions.  If only
  1575. one factor is specified, both the width and height factors assume the
  1576. value.
  1577. X
  1578. Factors may be fractional.  For example, a factor of 1.5 will increase the
  1579. image size by one and one-half.
  1580. .TP 5
  1581. .B "-screen"
  1582. This option indicates that the GetImage request used to obtain the image
  1583. should be done on the root window, rather than directly on the specified
  1584. window.  In this way, you can obtain pieces of other windows that overlap
  1585. the specified window, and more importantly, you can capture menus or other
  1586. popups that are independent windows but appear over the specified window.
  1587. .TP 5
  1588. .B -verbose
  1589. print detailed information about the image.
  1590. This information is printed: image scene number;  image name;  image size;
  1591. the image class (\fIDirectClass\fP or \fIPseudoClass\fP);  the total
  1592. number of unique colors;  and the number of seconds to read and write the
  1593. image.
  1594. .TP 5
  1595. .B "-window \fIid\fP"
  1596. select window with this id or name.
  1597. X
  1598. With this option you can specify the target  window by id or name
  1599. rather than using the mouse.  Specify 'root' to select X's root window
  1600. as the target window.
  1601. .PP
  1602. Change \fI-\fP to \fI+\fP in any option above to reverse its effect.  For
  1603. example \fB+frame\fP means do not include window manager frame.
  1604. .PP
  1605. Specify \fIfile\fP as \fI-\fP for standard input or output.
  1606. .PP
  1607. .SH ENVIRONMENT
  1608. .PP
  1609. .TP 5
  1610. .B DISPLAY
  1611. To get the default host, display number, and screen.
  1612. .SH SEE ALSO
  1613. XX(1)
  1614. .SH COPYRIGHT
  1615. Copyright 1992 E. I. du Pont de Nemours & Company
  1616. .PP
  1617. Permission to use, copy, modify, distribute, and sell this software and
  1618. its documentation for any purpose is hereby granted without fee,
  1619. provided that the above copyright notice appear in all copies and that
  1620. both that copyright notice and this permission notice appear in
  1621. supporting documentation, and that the name of E. I. du Pont de Nemours
  1622. & Company not be used in advertising or publicity pertaining to
  1623. distribution of the software without specific, written prior
  1624. permission.  E. I. du Pont de Nemours & Company makes no representations
  1625. about the suitability of this software for any purpose.  It is provided
  1626. "as is" without express or implied warranty.
  1627. .PP
  1628. E. I. du Pont de Nemours & Company disclaims all warranties with regard
  1629. to this software, including all implied warranties of merchantability
  1630. and fitness, in no event shall E. I. du Pont de Nemours & Company be
  1631. liable for any special, indirect or consequential damages or any
  1632. damages whatsoever resulting from loss of use, data or profits, whether
  1633. in an action of contract, negligence or other tortious action, arising
  1634. out of or in connection with the use or performance of this software.
  1635. .SH AUTHORS
  1636. John Cristy, E.I. du Pont De Nemours & Company Incorporated
  1637. X
  1638. SHAR_EOF
  1639. chmod 0644 ImageMagick/XtoPS.man ||
  1640. echo 'restore of ImageMagick/XtoPS.man failed'
  1641. Wc_c="`wc -c < 'ImageMagick/XtoPS.man'`"
  1642. test 6159 -eq "$Wc_c" ||
  1643.     echo 'ImageMagick/XtoPS.man: original size 6159, current size' "$Wc_c"
  1644. rm -f _shar_wnt_.tmp
  1645. fi
  1646. # ============= ImageMagick/Manifest.ps ==============
  1647. if test -f 'ImageMagick/Manifest.ps' -a X"$1" != X"-c"; then
  1648.     echo 'x - skipping ImageMagick/Manifest.ps (File already exists)'
  1649.     rm -f _shar_wnt_.tmp
  1650. else
  1651. > _shar_wnt_.tmp
  1652. echo 'x - extracting ImageMagick/Manifest.ps (Text)'
  1653. sed 's/^X//' << 'SHAR_EOF' > 'ImageMagick/Manifest.ps' &&
  1654. %!PS-Adobe-2.0 EPSF-2.0
  1655. %%Title: (Directory map of ImageMagick)
  1656. %%Creator: pstree, (C) 1990 Gisle Aas, NR
  1657. %%DocumentFonts: Times-Roman
  1658. %%BoundingBox: 60 112 310 742
  1659. 60.0 0 translate
  1660. /s {show} bind def
  1661. /m {moveto} bind def
  1662. /Times-Roman findfont 10 scalefont setfont
  1663. 0.1 setlinewidth
  1664. 90 732 m(ChangeLog)s
  1665. 90 722 m(Imakefile)s
  1666. 90 712 m(Magick.tmpl)s
  1667. 90 702 m(Make.com)s
  1668. 90 692 m(Makefile)s
  1669. 90 682 m(Manifest.ps)s
  1670. 90 672 m(PreRvIcccm.c)s
  1671. 90 662 m(PreRvIcccm.h)s
  1672. 90 652 m(README)s
  1673. 90 642 m(SYNOPSIS)s
  1674. 90 632 m(X.c)s
  1675. 90 622 m(X.h)s
  1676. 90 612 m(XWDFile.h)s
  1677. 90 602 m(XtoPS.c)s
  1678. 90 592 m(XtoPS.man)s
  1679. 90 582 m(alien.c)s
  1680. 90 572 m(alien.h)s
  1681. 90 562 m(animate.c)s
  1682. 90 552 m(animate.h)s
  1683. 90 542 m(animate.man)s
  1684. 90 532 m(colors.c)s
  1685. 90 522 m(compress.c)s
  1686. 90 512 m(compress.h)s
  1687. 90 502 m(display.c)s
  1688. 90 492 m(display.h)s
  1689. 90 482 m(display.man)s
  1690. 90 472 m(image.c)s
  1691. 90 462 m(image.h)s
  1692. 180 452 m(README)s
  1693. 180 442 m(aquarium.miff)s
  1694. 180 432 m(dna.miff)s
  1695. 180 422 m(montage.miff)s
  1696. 180 412 m(swan.miff)s
  1697. 90 432 m(images)s
  1698. (images) stringwidth pop 91.0 add 435.3 m
  1699. [ 455.3 445.3 435.3 425.3 415.3]
  1700. {gsave 176.0 exch lineto stroke grestore} forall
  1701. 90 402 m(import.c)s
  1702. 90 392 m(import.man)s
  1703. 90 382 m(miff.man)s
  1704. 90 372 m(montage.c)s
  1705. 90 362 m(montage.man)s
  1706. 90 352 m(quantize.c)s
  1707. 90 342 m(quantize.man)s
  1708. 90 332 m(rotate.c)s
  1709. 180 322 m(Makefile)s
  1710. 180 312 m(README)s
  1711. 180 302 m(dna.script)s
  1712. 90 312 m(scenes)s
  1713. (scenes) stringwidth pop 91.0 add 315.3 m
  1714. [ 325.3 315.3 305.3]
  1715. {gsave 176.0 exch lineto stroke grestore} forall
  1716. 90 292 m(signature.c)s
  1717. 180 282 m(Imakefile)s
  1718. 180 272 m(MIFFtoSTEREO.c)s
  1719. 180 262 m(Make.com)s
  1720. 180 252 m(Makefile)s
  1721. 180 242 m(convert.c)s
  1722. 180 232 m(convert.man)s
  1723. 180 222 m(mogrify.c)s
  1724. 180 212 m(mogrify.man)s
  1725. 90 247 m(utilities)s
  1726. (utilities) stringwidth pop 91.0 add 250.3 m
  1727. [ 285.3 275.3 265.3 255.3 245.3 235.3 225.3 215.3]
  1728. {gsave 176.0 exch lineto stroke grestore} forall
  1729. 180 202 m(Imakefile)s
  1730. 180 192 m(Makefile)s
  1731. 180 182 m(README)s
  1732. 180 172 m(get)s
  1733. 180 162 m(network.c)s
  1734. 180 152 m(regular.c)s
  1735. 180 142 m(regular.h)s
  1736. 180 132 m(xtp.c)s
  1737. 180 122 m(xtp.h)s
  1738. 180 112 m(xtp.man)s
  1739. 90 157 m(xtp)s
  1740. (xtp) stringwidth pop 91.0 add 160.3 m
  1741. [ 205.3 195.3 185.3 175.3 165.3 155.3 145.3 135.3 125.3 115.3]
  1742. {gsave 176.0 exch lineto stroke grestore} forall
  1743. 0 444 m(ImageMagick)s
  1744. (ImageMagick) stringwidth pop 1.0 add 447.8 m
  1745. [ 735.3 725.3 715.3 705.3 695.3 685.3 675.3 665.3 655.3 645.3 635.3 625.3 615.3 605.3 595.3 585.3 575.3 565.3 555.3 545.3 535.3 525.3 515.3 505.3 495.3 485.3 475.3 465.3 435.3 405.3 395.3 385.3 375.3 365.3 355.3 345.3 335.3 315.3 295.3 250.3 160.3]
  1746. {gsave 86.0 exch lineto stroke grestore} forall
  1747. showpage
  1748. SHAR_EOF
  1749. chmod 0644 ImageMagick/Manifest.ps ||
  1750. echo 'restore of ImageMagick/Manifest.ps failed'
  1751. Wc_c="`wc -c < 'ImageMagick/Manifest.ps'`"
  1752. test 2589 -eq "$Wc_c" ||
  1753.     echo 'ImageMagick/Manifest.ps: original size 2589, current size' "$Wc_c"
  1754. rm -f _shar_wnt_.tmp
  1755. fi
  1756. # ============= ImageMagick/colors.c ==============
  1757. if test -f 'ImageMagick/colors.c' -a X"$1" != X"-c"; then
  1758.     echo 'x - skipping ImageMagick/colors.c (File already exists)'
  1759.     rm -f _shar_wnt_.tmp
  1760. else
  1761. > _shar_wnt_.tmp
  1762. echo 'x - extracting ImageMagick/colors.c (Text)'
  1763. sed 's/^X//' << 'SHAR_EOF' > 'ImageMagick/colors.c' &&
  1764. /*
  1765. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1766. %                                                                             %
  1767. %                                                                             %
  1768. %                                                                             %
  1769. %                  CCCC   OOO   L       OOO   RRRR    SSSSS                   %
  1770. %                 C      O   O  L      O   O  R   R   SS                      %
  1771. %                 C      O   O  L      O   O  RRRR     SSS                    %
  1772. %                 C      O   O  L      O   O  R R        SS                   %
  1773. %                  CCCC   OOO   LLLLL   OOO   R  R    SSSSS                   %
  1774. %                                                                             %
  1775. %                                                                             %
  1776. %                       Count the Colors in an Image                          %
  1777. %                                                                             %
  1778. %                                                                             %
  1779. %                                                                             %
  1780. SHAR_EOF
  1781. true || echo 'restore of ImageMagick/colors.c failed'
  1782. fi
  1783. echo 'End of  part 1'
  1784. echo 'File ImageMagick/colors.c is continued in part 2'
  1785. echo 2 > _shar_seq_.tmp
  1786. exit 0
  1787. exit 0 # Just in case...
  1788.